iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
自我挑戰組

Python 編程精通之路系列 第 15

第十五天:多線程和多進程

  • 分享至 

  • xImage
  •  

在Python中,多線程和多進程是用於實現並行處理的兩種重要方式。它們允許您同時執行多個任務,提高程序的性能。在這個教學中,我們將研究多線程和多進程的基本概念。

多線程(Multithreading):

多線程是通過創建多個執行緒來實現並行處理的技術。每個執行緒都可以執行不同的任務,並共享進程的資源。以下是一個多線程的示例:

import threading

# 定義一個函數,用於打印數字
def print_numbers():
    for i in range(1, 6):
        print(f"Number {i}")

# 定義一個函數,用於打印字母
def print_letters():
    for letter in 'abcde':
        print(f"Letter {letter}")

# 創建第一個執行緒,目標函數是print_numbers
thread1 = threading.Thread(target=print_numbers)
# 創建第二個執行緒,目標函數是print_letters
thread2 = threading.Thread(target=print_letters)

# 啟動第一個執行緒,開始執行print_numbers函數
thread1.start()
# 啟動第二個執行緒,開始執行print_letters函數
thread2.start()

# 使用join方法等待兩個執行緒完成
thread1.join()
thread2.join()

在這個示例中,我們創建了兩個執行緒,一個執行print_numbers函數,另一個執行print_letters函數。它們可以並行運行。

多進程(Multiprocessing):

多進程是通過創建多個獨立的進程來實現並行處理的技術。每個進程都有自己的記憶體空間,並且不共享資源。以下是一個多進程的示例:

import multiprocessing

# 定義一個函數,計算數字的平方
def square(x):
    result = x * x
    print(f"The square of {x} is {result}")

# 定義一個函數,計算數字的立方
def cube(x):
    result = x * x * x
    print(f"The cube of {x} is {result}")

# 進行多進程的程式碼通常需要將主程式碼包裹在這個判斷中,
# 以確保它只在主程式進程中執行,而不在子進程中執行。
if __name__ == "__main__":
    # 創建第一個獨立進程,目標函數是square,並傳遞5作為引數
    process1 = multiprocessing.Process(target=square, args=(5,))
    # 創建第二個獨立進程,目標函數是cube,並傳遞5作為引數
    process2 = multiprocessing.Process(target=cube, args=(5,))

    # 啟動第一個進程,開始執行square函數
    process1.start()
    # 啟動第二個進程,開始執行cube函數
    process2.start()

    # 使用join方法等待兩個進程完成
    process1.join()
    process2.join()

在這個示例中,我們創建了兩個獨立的進程,一個計算數字的平方,另一個計算數字的立方。它們可以並行運行。

多線程和多進程都是實現並行處理的有用工具,它們可以提高程序的效率和性能。根據應用程序的需求,您可以選擇使用其中之一來實現並行處理。


上一篇
第十四天:生成器(Generators)
下一篇
第十六天:Python中的日期和時間處理
系列文
Python 編程精通之路20
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言